package business;

import java.util.Hashtable;
import java.util.List;

import javax.naming.InitialContext;
import javax.naming.NamingException;

import org.junit.Assert;

import uade.ejb.AdministradorLaCorunia;
import dto.ArticuloDTO;
import dto.CentroDistribucionDTO;
import dto.OfertaDTO;
import dto.PedidoDTO;
import dto.SolicitudDistribucionDTO;
import dto.xml.XMLPalcDTO;

public class LaCorunaDelegator implements uade.ejb.AdministradorLaCorunia{
	private AdministradorLaCorunia administrador;
	public static LaCorunaDelegator instance=null;
	
	public static LaCorunaDelegator getInstance(){
		if(instance == null){
			instance= new LaCorunaDelegator();
		}			
		return instance;
	}
	
	private LaCorunaDelegator(){
		this.getConnection();
	}
	public void getConnection(){
			try {
	                Hashtable<String, String> props = new Hashtable<String,String>();
	                props.put(InitialContext.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
	                props.put(InitialContext.PROVIDER_URL,"jnp://127.0.0.1:1099");
	                
	                InitialContext ic;
	
	                ic = new InitialContext(props);
	                administrador = (AdministradorLaCorunia)ic.lookup("tpis-coruniaEAR/AdministradorLaCoruniaBean/remote");
	                /*administrador.testPersistence();*/
	                if(administrador == null ){
	                	throw new RuntimeException("Administrador es nulo");
	                }
	                //Assert.assertNotNull(administrador);
	                
	        } catch (NamingException e) {
	                e.printStackTrace();
	                Assert.fail();
	        }
	}
	
	public void testPersistence() {
		administrador.testPersistence();
		
	}

	@Override
	public List<ArticuloDTO> getArticulos() {
		// TODO Auto-generated method stub
		return administrador.getArticulos();
	}

	@Override
	public boolean nuevoArticulo(ArticuloDTO articulo) {
		// TODO Auto-generated method stub
		return administrador.nuevoArticulo(articulo);
	}

	@Override
	public ArticuloDTO getArticulo(Integer articulo_ref) {
		return administrador.getArticulo(articulo_ref);
	}

	public List<ArticuloDTO> getListadoTentativo() {
		return administrador.getListadoTentativo();
	}

	public void generarOFAD(List<String> refs_seleccionados) {
		administrador.generarOFAD(refs_seleccionados);
	}

	public List<OfertaDTO> getListdoOFAD() {
		return administrador.getListdoOFAD();
	}
	
	public PedidoDTO nuevoPalc(XMLPalcDTO palc){
		return administrador.nuevoPalc(palc);
	}

	public String getOFADxml(String ofadref) {
		return administrador.getOFADxml(ofadref);
	}

	public void generarValoresSemilla() {
		administrador.generarValoresSemilla();
		
	}

	@Override
	public List<CentroDistribucionDTO> getCentros() {
		return administrador.getCentros();
	}
	@Override
	public void generarSOLDIS(String ref) {
		administrador.generarSOLDIS(ref);
	}

	@Override
	public void generarSolicitudesDistribucionWS() {
		administrador.generarSolicitudesDistribucionWS();		
	}

}
